Overview#
This notebook gives a general overview of the features included in the dataset.
Show imports
%load_ext autoreload
%autoreload 2
import os
import dimcat as dc
import pandas as pd
import plotly.express as px
from dimcat import filters, plotting
from IPython.display import display
import utils
RESULTS_PATH = os.path.abspath(os.path.join(utils.OUTPUT_FOLDER, "overview"))
os.makedirs(RESULTS_PATH, exist_ok=True)
def make_output_path(
filename: str,
extension=None,
path=RESULTS_PATH,
) -> str:
return utils.make_output_path(filename=filename, extension=extension, path=path)
def save_figure_as(
fig, filename, formats=("png", "pdf"), directory=RESULTS_PATH, **kwargs
):
if formats is not None:
for fmt in formats:
plotting.write_image(fig, filename, directory, format=fmt, **kwargs)
else:
plotting.write_image(fig, filename, directory, **kwargs)
Loading data
D = utils.get_dataset("kleine_geistliche_konzerte", corpus_release="v2.4")
package = D.inputs.get_package()
package_info = package._package.custom
git_tag = package_info.get("git_tag")
utils.print_heading("Data and software versions")
print("Heinrich Schütz – Kleine Geistliche Konzerte version v2.4")
print(f"Datapackage '{package.package_name}' @ {git_tag}")
print(f"dimcat version {dc.__version__}\n")
D
Data and software versions
--------------------------
Heinrich Schütz – Kleine Geistliche Konzerte version v2.4
Datapackage 'kleine_geistliche_konzerte' @ v2.4
dimcat version 3.4.0
Dataset
=======
{'inputs': {'basepath': None,
'packages': {'kleine_geistliche_konzerte': ["'kleine_geistliche_konzerte.measures' "
'(MuseScoreFacetName.MuseScoreMeasures)',
"'kleine_geistliche_konzerte.notes' "
'(MuseScoreFacetName.MuseScoreNotes)',
"'kleine_geistliche_konzerte.expanded' "
'(MuseScoreFacetName.MuseScoreHarmonies)',
"'kleine_geistliche_konzerte.chords' "
'(MuseScoreFacetName.MuseScoreChords)',
"'kleine_geistliche_konzerte.metadata' "
'(FeatureName.Metadata)']}},
'outputs': {'basepath': None, 'packages': {}},
'pipeline': []}
filtered_D = filters.HasHarmonyLabelsFilter(keep_values=[True]).process(D)
all_metadata = filtered_D.get_metadata()
assert len(all_metadata) > 0, "No pieces selected for analysis."
all_metadata
| TimeSig | KeySig | last_mc | last_mn | length_qb | last_mc_unfolded | last_mn_unfolded | length_qb_unfolded | all_notes_qb | n_onsets | ... | staff_2_ambitus | staff_2_instrument | staff_3_ambitus | staff_3_instrument | staff_4_ambitus | staff_4_instrument | staff_5_ambitus | staff_5_instrument | staff_6_ambitus | staff_6_instrument | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| corpus | piece | |||||||||||||||||||||
| kleine_geistliche_konzerte | op08n01swv282_Eile_mich,_Gott,_zu_erretten | {1: '4/4'} | {1: 0} | 68 | 68 | 272.0 | 68 | 68 | 272.0 | 499.50 | 315 | ... | 38-52 (D2-E3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> |
| op08n02swv283_Bringt_her_dem_Herren | {1: '2/2', 14: '3/2', 25: '2/2', 43: '3/2', 54... | {1: 0} | 89 | 89 | 426.0 | 89 | 89 | 426.0 | 801.50 | 479 | ... | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n03swv284_Ich_danke_dem_Herrn_von_ganzem_Herzen | {1: '2/2'} | {1: -1} | 114 | 114 | 456.0 | 114 | 114 | 456.0 | 875.00 | 625 | ... | 39-58 (Eb2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n04swv285_O_süsser,_o_freundlicher | {1: '4/4', 25: '3/2', 33: '4/4'} | {1: -1} | 107 | 107 | 444.0 | 107 | 107 | 444.0 | 828.00 | 552 | ... | 38-62 (D2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n05swv286_Der_Herr_ist_gross | {1: '4/4'} | {1: 0} | 74 | 74 | 296.0 | 74 | 74 | 296.0 | 761.00 | 630 | ... | 60-77 (C4-F5) | Soprano II | 40-57 (E2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n06swv287_O_lieber_Herre_Gott | {1: '4/4', 28: '3/2', 43: '4/4', 50: '3/2', 58... | {1: -1} | 96 | 96 | 430.0 | 96 | 96 | 430.0 | 1097.00 | 626 | ... | 60-77 (C4-F5) | Soprano II | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n07swv288_Ihr_Heiligen,_lobsinget_dem_Herren | {1: '4/4'} | {1: 1} | 81 | 81 | 324.0 | 81 | 81 | 324.0 | 790.00 | 501 | ... | 57-76 (A3-E5) | Soprano II | 40-59 (E2-B3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n08swv289_Erhöre_mich,_wenn_ich_rufe | {1: '4/4'} | {1: 1} | 65 | 65 | 260.0 | 65 | 65 | 260.0 | 696.50 | 377 | ... | 61-76 (C#4-E5) | Soprano II | 40-57 (E2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n09swv290_Wohl_dem,_der_nicht_wandelt_im_Rat_der_Gottlosen | {1: '3/2', 57: '2/2', 82: '3/2', 132: '2/2'} | {1: -1} | 134 | 134 | 748.0 | 134 | 134 | 748.0 | 1885.00 | 923 | ... | 55-70 (G3-Bb4) | Alto | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n10swv291_Schaffe_in_mir,_Gott,_ein_reines_Herz | {1: '4/2'} | {1: 0} | 39 | 39 | 312.0 | 39 | 39 | 312.0 | 802.67 | 500 | ... | 48-65 (C3-F4) | Tenor | 43-60 (G2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n11swv292_Der_Herr_schauet_vom_Himmel_auf_der_Menschen_Kinder | {1: '4/4', 38: '3/2', 51: '4/4'} | {1: 0} | 81 | 81 | 350.0 | 81 | 81 | 350.0 | 898.00 | 487 | ... | 43-60 (G2-C4) | Bass | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n12swv293_Lobet_den_Herren,_der_zu_Zion_wohnet | {1: '4/4'} | {1: 0} | 80 | 80 | 320.0 | 80 | 80 | 320.0 | 848.50 | 443 | ... | 55-69 (G3-A4) | Alto II | 43-60 (G2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n13swv294_Eins_bitte_ich_vom_Herren | {1: '4/4'} | {1: -1} | 86 | 86 | 344.0 | 86 | 86 | 344.0 | 854.00 | 440 | ... | 48-65 (C3-F4) | Tenor II | 40-58 (E2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n14swv295_O_hilf,_Christe_Gottes_Sohn | {1: '4/4'} | {1: 0} | 81 | 81 | 324.0 | 81 | 81 | 324.0 | 836.00 | 366 | ... | 50-65 (D3-F4) | Tenor 2 | 43-58 (G2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n15swv296_Fürchte_dich_nicht | {1: '4/4', 4: '3/2', 6: '4/4', 9: '3/2', 13: '... | {1: 0} | 77 | 77 | 320.0 | 77 | 77 | 320.0 | 787.00 | 468 | ... | 42-58 (F#2-Bb3) | Bass II | 38-62 (D2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n16swv297_O_Herr_hilf | {1: '4/4', 19: '3/2', 40: '4/4'} | {1: -1} | 61 | 61 | 286.0 | 61 | 61 | 286.0 | 935.50 | 599 | ... | 61-77 (C#4-F5) | Soprano II | 48-65 (C3-F4) | Tenor | 41-62 (F2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n18swv299_Die_Gottseligkeit_ist_zu_allen_Dingen_nütz | {1: '4/4'} | {1: 1} | 51 | 51 | 204.0 | 51 | 51 | 204.0 | 645.00 | 345 | ... | 60-74 (C4-D5) | Soprano II | 43-55 (G2-G3) | Bass | 43-55 (G2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n19swv300_Himmel_und_Erde_vergehen | {1: '4/4'} | {1: -1} | 54 | 54 | 216.0 | 54 | 54 | 216.0 | 591.00 | 435 | ... | 36-60 (C2-C4) | Bass II | 36-60 (C2-C4) | Bass III | 36-58 (C2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n20swv301_Nun_komm_der_Heiden_Heiland | {1: '3/2', 15: '4/4'} | {1: -1} | 90 | 90 | 388.0 | 90 | 90 | 388.0 | 1427.00 | 808 | ... | 60-79 (C4-G5) | Soprano II | 43-62 (G2-D4) | Bass I | 41-55 (F2-G3) | Bass II | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | |
| op08n21swv302_Ein_Kind_ist_uns_geboren | {1: '3/2', 37: '4/4', 49: '3/2', 58: '4/4', 61... | {1: -1} | 125 | 125 | 608.0 | 125 | 125 | 608.0 | 2214.50 | 1208 | ... | 53-69 (F3-A4) | Alto | 48-63 (C3-Eb4) | Tenor | 41-62 (F2-D4) | Bass | 40-62 (E2-D4) | Continuo | <NA> | <NA> | |
| op08n22swv303_Wir_glauben_all_an_einen_Gott | {1: '4/4', 72: '3/2', 79: '4/4'} | {1: 0} | 120 | 120 | 494.0 | 120 | 120 | 494.0 | 1858.00 | 1044 | ... | 57-76 (A3-E5) | Soprano II | 48-64 (C3-E4) | Tenor | 38-60 (D2-C4) | Bass | 38-65 (D2-F4) | Continuo | <NA> | <NA> | |
| op08n23swv304_Siehe,_mein_Fürsprecher_im_Himmel | {1: '4/4'} | {1: 0} | 93 | 93 | 372.0 | 93 | 93 | 372.0 | 1300.50 | 775 | ... | 40-69 (E2-A4) | Alto | 43-65 (G2-F4) | Tenor | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | |
| op08n24swv305_Ich_hab_mein_Sach_Gott_heimgestellt | {1: '4/4'} | {1: -1} | 299 | 299 | 1196.0 | 299 | 299 | 1196.0 | 4105.50 | 3387 | ... | 41-77 (F2-F5) | Soprano II | 41-69 (F2-A4) | Alto | 43-67 (G2-G4) | Tenor | 43-58 (G2-Bb3) | Bass | 43-58 (G2-Bb3) | Continuo | |
| op09n01swv306_Ich_will_den_Herren_loben_allezeit | {1: '4/4', 14: '3/2', 18: '4/4', 32: '3/2', 36... | {1: -1} | 85 | 85 | 380.0 | 85 | 85 | 380.0 | 715.00 | 610 | ... | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n02swv307_Was_hast_du_verwirket | {1: '4/4'} | {1: 0} | 82 | 82 | 328.0 | 82 | 82 | 328.0 | 624.00 | 436 | ... | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n03swv308_O_Jesu,_nomen_dulce | {1: '4/4'} | {1: -1} | 66 | 66 | 264.0 | 66 | 66 | 264.0 | 508.50 | 467 | ... | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n04swv309_O_misericordissime_Jesu | {1: '2/2'} | {1: -1} | 92 | 92 | 368.0 | 92 | 92 | 368.0 | 705.50 | 513 | ... | 41-57 (F2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n05swv310_Ich_liege_und_schlafe | {1: '4/4', 7: '3/2', 11: '4/4', 21: '3/2', 25:... | {1: 0} | 86 | 86 | 374.0 | 86 | 86 | 374.0 | 710.50 | 482 | ... | 40-60 (E2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n06swv311_Habe_deine_Lust_an_dem_Herren | {1: '4/4', 111: '3/2', 135: '4/4'} | {1: 0} | 141 | 141 | 612.0 | 141 | 141 | 612.0 | 1539.00 | 1238 | ... | 60-79 (C4-G5) | Soprano II | 40-60 (E2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n07swv312_Herr,_ich_hoffe_darauf | {1: '2/2'} | {1: 0} | 78 | 78 | 312.0 | 78 | 78 | 312.0 | 758.00 | 704 | ... | 58-76 (Bb3-E5) | Soprano II | 40-58 (E2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n08swv313_Bone_Jesu,_verbum_Patris | {1: '4/4', 81: '3/2', 119: '4/4'} | {1: 0} | 124 | 124 | 572.0 | 124 | 124 | 572.0 | 1507.00 | 1200 | ... | 60-79 (C4-G5) | Soprano II | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n09swv314_Verbum_caro_factum | {1: '4/4', 8: '3/2', 12: '4/4', 21: '3/2', 25:... | {1: -1} | 121 | 121 | 578.0 | 121 | 121 | 578.0 | 1488.00 | 772 | ... | 60-79 (C4-G5) | Soprano II | 41-57 (F2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n10swv315_Hodie_Christus_natus_est | {1: '4/4'} | {1: 0} | 99 | 99 | 396.0 | 99 | 99 | 396.0 | 1007.00 | 884 | ... | 48-67 (C3-G4) | Tenor | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n11swv316_Wann_unsre_Augen_schlafen_ein | {1: '4/4'} | {1: -1} | 76 | 76 | 304.0 | 76 | 76 | 304.0 | 795.50 | 633 | ... | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n12swv317_Meister,_wir_haben_die_ganze_Nacht_gearbeitet | {1: '4/4'} | {1: 0} | 46 | 46 | 184.0 | 46 | 46 | 184.0 | 482.00 | 348 | ... | 48-65 (C3-F4) | Tenor II | 41-53 (F2-F3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n13swv318_Die_Furcht_des_Herren | {1: '4/4', 34: '3/2', 41: '4/4', 51: '3/2', 63... | {1: -1} | 66 | 66 | 302.0 | 66 | 66 | 302.0 | 750.00 | 372 | ... | 50-62 (D3-D4) | Tenor II | 38-55 (D2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n14swv319_Ich_beuge_meine_Knie_gegen_dem_Vater | {1: '4/4'} | {1: 0} | 95 | 95 | 380.0 | 95 | 95 | 380.0 | 939.00 | 630 | ... | 41-60 (F2-C4) | Bass II | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n15swv320_Ich_bin_jung_gewesen_und_bin_alt_worden | {1: '4/4'} | {1: -1} | 65 | 65 | 260.0 | 65 | 65 | 260.0 | 629.50 | 511 | ... | 38-58 (D2-Bb3) | Bass II | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n16swv321_Herr,_wenn_ich_nur_dich | {1: '2/2'} | {1: -1} | 78 | 78 | 312.0 | 78 | 78 | 312.0 | 974.00 | 813 | ... | 38-77 (D2-F5) | Soprano II | 48-67 (C3-G4) | Tenor | 38-55 (D2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n17swv322_Rorate,_rorate_coeli | {1: '4/4'} | {1: -1} | 64 | 64 | 256.0 | 64 | 64 | 256.0 | 758.50 | 803 | ... | 41-79 (F2-G5) | Soprano II | 43-58 (G2-Bb3) | Bass | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n18swv323_Joseph,_du_Sohn_David | {1: '4/4'} | {1: 0} | 77 | 77 | 308.0 | 77 | 77 | 308.0 | 1101.00 | 623 | ... | 66-81 (F#4-A5) | Soprano II | 45-62 (A2-D4) | Bass | 45-62 (A2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n19swv324_Ich_bin_die_Auferstehung | {1: '4/4'} | {1: 0} | 99 | 99 | 396.0 | 99 | 99 | 396.0 | 1196.50 | 1026 | ... | 50-65 (D3-F4) | Tenor II | 38-59 (D2-B3) | Bass | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n20swv325_Die_Seele_Christi_heilige_mich | {1: '4/4', 19: '3/2', 23: '4/4', 66: '3/2', 95... | {1: -1} | 114 | 114 | 522.0 | 114 | 114 | 522.0 | 1613.00 | 921 | ... | 43-64 (G2-E4) | Tenor | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n21swv326_Ich_ruf_zu_dir,_Herr_Jesu_Christ | {1: '4/4', 41: '3/2', 53: '4/4'} | {1: -1} | 85 | 85 | 364.0 | 85 | 85 | 364.0 | 1395.00 | 673 | ... | 58-79 (Bb3-G5) | Soprano II | 62-75 (D4-Eb5) | Soprano III | 43-63 (G2-Eb4) | Bass | 43-58 (G2-Bb3) | Continuo | <NA> | <NA> | |
| op09n22swv327_Allein_Gott_in_der_Höh | {1: '3/2', 136: '4/4'} | {1: 0} | 148 | 148 | 862.0 | 148 | 148 | 862.0 | 2289.00 | 1135 | ... | 43-76 (G2-E5) | Soprano II | 43-64 (G2-E4) | Tenor I | 43-64 (G2-E4) | Tenor II | 41-57 (F2-A3) | Continuo | <NA> | <NA> | |
| op09n23swv328_Veni,_Sancte_Spiritus | {1: '4/4'} | {1: 0} | 122 | 122 | 488.0 | 122 | 122 | 488.0 | 1656.50 | 1493 | ... | 48-77 (C3-F5) | Soprano II | 41-67 (F2-G4) | Tenor I | 45-65 (A2-F4) | Tenor II | 40-64 (E2-E4) | Continuo | <NA> | <NA> | |
| op09n24swv329_Ist_Gott_für_uns | {1: '4/4'} | {1: -1} | 76 | 76 | 304.0 | 76 | 76 | 304.0 | 1133.50 | 1073 | ... | 43-69 (G2-A4) | Alto | 41-65 (F2-F4) | Tenor | 41-60 (F2-C4) | Bass | 41-60 (F2-C4) | Continuo | <NA> | <NA> | |
| op09n25swv330_Wer_will_uns_scheiden_von_der_Liebe_Gottes | {1: '4/4'} | {1: -1} | 79 | 79 | 320.0 | 79 | 79 | 320.0 | 1194.50 | 973 | ... | 57-70 (A3-Bb4) | Alto | 50-66 (D3-F#4) | Tenor | 39-58 (Eb2-Bb3) | Bass | 39-60 (Eb2-C4) | Continuo | <NA> | <NA> | |
| op09n26swv331_Die_Stimm_des_Herren_gehet_auf_den_Wassern | {1: '4/4', 21: '3/2', 34: '4/4', 80: '3/2', 93... | {1: 0} | 138 | 138 | 666.0 | 138 | 138 | 666.0 | 2278.50 | 1153 | ... | 41-69 (F2-A4) | Alto | 41-65 (F2-F4) | Tenor | 41-60 (F2-C4) | Bass | 38-62 (D2-D4) | Continuo | <NA> | <NA> | |
| op09n27swv332_Jubilate_Deo_omnis_terra | {1: '4/4', 69: '3/2', 84: '4/4'} | {1: -1} | 130 | 130 | 550.0 | 130 | 130 | 550.0 | 1955.50 | 1972 | ... | 41-69 (F2-A4) | Alto | 41-65 (F2-F4) | Tenor | 40-58 (E2-Bb3) | Bass | 40-60 (E2-C4) | Continuo | <NA> | <NA> | |
| op09n28swv333_Sei_gegrüßet,_Maria | {1: '3/2', 206: '4/4', 209: '3/2', 217: '4/4'} | {1: 0} | 220 | 220 | 1306.0 | 220 | 220 | 1306.0 | 3921.00 | 1536 | ... | 38-77 (D2-F5) | Soprano II | 38-71 (D2-B4) | Alto | 48-67 (C3-G4) | Tenor | 41-57 (F2-A3) | Bass | 41-57 (F2-A3) | Continuo | |
| op09n29swv334_Ave_Maria,_qualis_est | {1: '3/2', 201: '4/4', 204: '3/2', 212: '4/4'} | {1: 0} | 215 | 215 | 1276.0 | 215 | 215 | 1276.0 | 3851.00 | 1617 | ... | 38-77 (D2-F5) | Soprano II | 38-69 (D2-A4) | Alto | 48-67 (C3-G4) | Tenor | 41-57 (F2-A3) | Bass | 41-57 (F2-A3) | Continuo | |
| op09n30swv335_Was_betrübst_du_dich,_meine_Seele | {1: '4/4'} | {1: -1} | 87 | 87 | 348.0 | 87 | 87 | 348.0 | 1524.50 | 1177 | ... | 60-77 (C4-F5) | Soprano II | 55-69 (G3-A4) | Alto | 48-65 (C3-F4) | Tenor | 43-60 (G2-C4) | Bass | 39-57 (Eb2-A3) | Continuo | |
| op09n31swv336_Quemadmodum_desiderat_cervus | {1: '4/4'} | {1: -1} | 189 | 189 | 756.0 | 189 | 189 | 756.0 | 2604.50 | 2398 | ... | 38-69 (D2-A4) | Alto | 38-67 (D2-G4) | Tenor I | 41-64 (F2-E4) | Tenor II | 38-58 (D2-Bb3) | Bass | 38-62 (D2-D4) | Continuo | |
| op09n32swv337_Aufer_immensam | {1: '2/2'} | {1: 0} | 165 | 165 | 660.0 | 165 | 165 | 660.0 | 2217.50 | 2035 | ... | 43-69 (G2-A4) | Alto | 40-67 (E2-G4) | Tenor I | 38-64 (D2-E4) | Tenor II | 43-60 (G2-C4) | Bass | 43-60 (G2-C4) | Continuo |
55 rows × 63 columns
mean_composition_years = utils.corpus_mean_composition_years(all_metadata)
chronological_order = mean_composition_years.index.to_list()
corpus_colors = dict(zip(chronological_order, utils.CORPUS_COLOR_SCALE))
corpus_names = {
corp: utils.get_corpus_display_name(corp) for corp in chronological_order
}
chronological_corpus_names = list(corpus_names.values())
corpus_name_colors = {
corpus_names[corp]: color for corp, color in corpus_colors.items()
}
mean_composition_years
corpus
kleine_geistliche_konzerte 1637.745455
Name: mean_composition_year, dtype: float64
Composition dates#
This section relies on the dataset’s metadata.
valid_composed_start = pd.to_numeric(all_metadata.composed_start, errors="coerce")
valid_composed_end = pd.to_numeric(all_metadata.composed_end, errors="coerce")
print(
f"Composition dates range from {int(valid_composed_start.min())} {valid_composed_start.idxmin()} "
f"to {int(valid_composed_end.max())} {valid_composed_end.idxmax()}."
)
Composition dates range from 1636 ('kleine_geistliche_konzerte', 'op08n01swv282_Eile_mich,_Gott,_zu_erretten') to 1639 ('kleine_geistliche_konzerte', 'op09n01swv306_Ich_will_den_Herren_loben_allezeit').
Mean composition years per corpus#
def make_summary(metadata_df):
piece_is_annotated = metadata_df.label_count > 0
return metadata_df[piece_is_annotated].copy()
Show source
summary = make_summary(all_metadata)
bar_data = pd.concat(
[
mean_composition_years.rename("year"),
summary.groupby(level="corpus").size().rename("pieces"),
],
axis=1,
).reset_index()
N = len(summary)
fig = px.bar(
bar_data,
x="year",
y="pieces",
color="corpus",
color_discrete_map=corpus_colors,
title=f"Temporal coverage of the {N} annotated pieces in the Distant Listening Corpus",
)
fig.update_traces(width=5)
fig.update_layout(**utils.STD_LAYOUT)
fig.update_traces(width=5)
save_figure_as(fig, "pieces_timeline_bars")
fig.show()
summary
| TimeSig | KeySig | last_mc | last_mn | length_qb | last_mc_unfolded | last_mn_unfolded | length_qb_unfolded | all_notes_qb | n_onsets | ... | staff_2_ambitus | staff_2_instrument | staff_3_ambitus | staff_3_instrument | staff_4_ambitus | staff_4_instrument | staff_5_ambitus | staff_5_instrument | staff_6_ambitus | staff_6_instrument | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| corpus | piece | |||||||||||||||||||||
| kleine_geistliche_konzerte | op08n01swv282_Eile_mich,_Gott,_zu_erretten | {1: '4/4'} | {1: 0} | 68 | 68 | 272.0 | 68 | 68 | 272.0 | 499.50 | 315 | ... | 38-52 (D2-E3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> |
| op08n02swv283_Bringt_her_dem_Herren | {1: '2/2', 14: '3/2', 25: '2/2', 43: '3/2', 54... | {1: 0} | 89 | 89 | 426.0 | 89 | 89 | 426.0 | 801.50 | 479 | ... | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n03swv284_Ich_danke_dem_Herrn_von_ganzem_Herzen | {1: '2/2'} | {1: -1} | 114 | 114 | 456.0 | 114 | 114 | 456.0 | 875.00 | 625 | ... | 39-58 (Eb2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n04swv285_O_süsser,_o_freundlicher | {1: '4/4', 25: '3/2', 33: '4/4'} | {1: -1} | 107 | 107 | 444.0 | 107 | 107 | 444.0 | 828.00 | 552 | ... | 38-62 (D2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n05swv286_Der_Herr_ist_gross | {1: '4/4'} | {1: 0} | 74 | 74 | 296.0 | 74 | 74 | 296.0 | 761.00 | 630 | ... | 60-77 (C4-F5) | Soprano II | 40-57 (E2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n06swv287_O_lieber_Herre_Gott | {1: '4/4', 28: '3/2', 43: '4/4', 50: '3/2', 58... | {1: -1} | 96 | 96 | 430.0 | 96 | 96 | 430.0 | 1097.00 | 626 | ... | 60-77 (C4-F5) | Soprano II | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n07swv288_Ihr_Heiligen,_lobsinget_dem_Herren | {1: '4/4'} | {1: 1} | 81 | 81 | 324.0 | 81 | 81 | 324.0 | 790.00 | 501 | ... | 57-76 (A3-E5) | Soprano II | 40-59 (E2-B3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n08swv289_Erhöre_mich,_wenn_ich_rufe | {1: '4/4'} | {1: 1} | 65 | 65 | 260.0 | 65 | 65 | 260.0 | 696.50 | 377 | ... | 61-76 (C#4-E5) | Soprano II | 40-57 (E2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n09swv290_Wohl_dem,_der_nicht_wandelt_im_Rat_der_Gottlosen | {1: '3/2', 57: '2/2', 82: '3/2', 132: '2/2'} | {1: -1} | 134 | 134 | 748.0 | 134 | 134 | 748.0 | 1885.00 | 923 | ... | 55-70 (G3-Bb4) | Alto | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n10swv291_Schaffe_in_mir,_Gott,_ein_reines_Herz | {1: '4/2'} | {1: 0} | 39 | 39 | 312.0 | 39 | 39 | 312.0 | 802.67 | 500 | ... | 48-65 (C3-F4) | Tenor | 43-60 (G2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n11swv292_Der_Herr_schauet_vom_Himmel_auf_der_Menschen_Kinder | {1: '4/4', 38: '3/2', 51: '4/4'} | {1: 0} | 81 | 81 | 350.0 | 81 | 81 | 350.0 | 898.00 | 487 | ... | 43-60 (G2-C4) | Bass | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n12swv293_Lobet_den_Herren,_der_zu_Zion_wohnet | {1: '4/4'} | {1: 0} | 80 | 80 | 320.0 | 80 | 80 | 320.0 | 848.50 | 443 | ... | 55-69 (G3-A4) | Alto II | 43-60 (G2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n13swv294_Eins_bitte_ich_vom_Herren | {1: '4/4'} | {1: -1} | 86 | 86 | 344.0 | 86 | 86 | 344.0 | 854.00 | 440 | ... | 48-65 (C3-F4) | Tenor II | 40-58 (E2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n14swv295_O_hilf,_Christe_Gottes_Sohn | {1: '4/4'} | {1: 0} | 81 | 81 | 324.0 | 81 | 81 | 324.0 | 836.00 | 366 | ... | 50-65 (D3-F4) | Tenor 2 | 43-58 (G2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n15swv296_Fürchte_dich_nicht | {1: '4/4', 4: '3/2', 6: '4/4', 9: '3/2', 13: '... | {1: 0} | 77 | 77 | 320.0 | 77 | 77 | 320.0 | 787.00 | 468 | ... | 42-58 (F#2-Bb3) | Bass II | 38-62 (D2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op08n16swv297_O_Herr_hilf | {1: '4/4', 19: '3/2', 40: '4/4'} | {1: -1} | 61 | 61 | 286.0 | 61 | 61 | 286.0 | 935.50 | 599 | ... | 61-77 (C#4-F5) | Soprano II | 48-65 (C3-F4) | Tenor | 41-62 (F2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n18swv299_Die_Gottseligkeit_ist_zu_allen_Dingen_nütz | {1: '4/4'} | {1: 1} | 51 | 51 | 204.0 | 51 | 51 | 204.0 | 645.00 | 345 | ... | 60-74 (C4-D5) | Soprano II | 43-55 (G2-G3) | Bass | 43-55 (G2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n19swv300_Himmel_und_Erde_vergehen | {1: '4/4'} | {1: -1} | 54 | 54 | 216.0 | 54 | 54 | 216.0 | 591.00 | 435 | ... | 36-60 (C2-C4) | Bass II | 36-60 (C2-C4) | Bass III | 36-58 (C2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op08n20swv301_Nun_komm_der_Heiden_Heiland | {1: '3/2', 15: '4/4'} | {1: -1} | 90 | 90 | 388.0 | 90 | 90 | 388.0 | 1427.00 | 808 | ... | 60-79 (C4-G5) | Soprano II | 43-62 (G2-D4) | Bass I | 41-55 (F2-G3) | Bass II | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | |
| op08n21swv302_Ein_Kind_ist_uns_geboren | {1: '3/2', 37: '4/4', 49: '3/2', 58: '4/4', 61... | {1: -1} | 125 | 125 | 608.0 | 125 | 125 | 608.0 | 2214.50 | 1208 | ... | 53-69 (F3-A4) | Alto | 48-63 (C3-Eb4) | Tenor | 41-62 (F2-D4) | Bass | 40-62 (E2-D4) | Continuo | <NA> | <NA> | |
| op08n22swv303_Wir_glauben_all_an_einen_Gott | {1: '4/4', 72: '3/2', 79: '4/4'} | {1: 0} | 120 | 120 | 494.0 | 120 | 120 | 494.0 | 1858.00 | 1044 | ... | 57-76 (A3-E5) | Soprano II | 48-64 (C3-E4) | Tenor | 38-60 (D2-C4) | Bass | 38-65 (D2-F4) | Continuo | <NA> | <NA> | |
| op08n23swv304_Siehe,_mein_Fürsprecher_im_Himmel | {1: '4/4'} | {1: 0} | 93 | 93 | 372.0 | 93 | 93 | 372.0 | 1300.50 | 775 | ... | 40-69 (E2-A4) | Alto | 43-65 (G2-F4) | Tenor | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | |
| op08n24swv305_Ich_hab_mein_Sach_Gott_heimgestellt | {1: '4/4'} | {1: -1} | 299 | 299 | 1196.0 | 299 | 299 | 1196.0 | 4105.50 | 3387 | ... | 41-77 (F2-F5) | Soprano II | 41-69 (F2-A4) | Alto | 43-67 (G2-G4) | Tenor | 43-58 (G2-Bb3) | Bass | 43-58 (G2-Bb3) | Continuo | |
| op09n01swv306_Ich_will_den_Herren_loben_allezeit | {1: '4/4', 14: '3/2', 18: '4/4', 32: '3/2', 36... | {1: -1} | 85 | 85 | 380.0 | 85 | 85 | 380.0 | 715.00 | 610 | ... | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n02swv307_Was_hast_du_verwirket | {1: '4/4'} | {1: 0} | 82 | 82 | 328.0 | 82 | 82 | 328.0 | 624.00 | 436 | ... | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n03swv308_O_Jesu,_nomen_dulce | {1: '4/4'} | {1: -1} | 66 | 66 | 264.0 | 66 | 66 | 264.0 | 508.50 | 467 | ... | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n04swv309_O_misericordissime_Jesu | {1: '2/2'} | {1: -1} | 92 | 92 | 368.0 | 92 | 92 | 368.0 | 705.50 | 513 | ... | 41-57 (F2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n05swv310_Ich_liege_und_schlafe | {1: '4/4', 7: '3/2', 11: '4/4', 21: '3/2', 25:... | {1: 0} | 86 | 86 | 374.0 | 86 | 86 | 374.0 | 710.50 | 482 | ... | 40-60 (E2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n06swv311_Habe_deine_Lust_an_dem_Herren | {1: '4/4', 111: '3/2', 135: '4/4'} | {1: 0} | 141 | 141 | 612.0 | 141 | 141 | 612.0 | 1539.00 | 1238 | ... | 60-79 (C4-G5) | Soprano II | 40-60 (E2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n07swv312_Herr,_ich_hoffe_darauf | {1: '2/2'} | {1: 0} | 78 | 78 | 312.0 | 78 | 78 | 312.0 | 758.00 | 704 | ... | 58-76 (Bb3-E5) | Soprano II | 40-58 (E2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n08swv313_Bone_Jesu,_verbum_Patris | {1: '4/4', 81: '3/2', 119: '4/4'} | {1: 0} | 124 | 124 | 572.0 | 124 | 124 | 572.0 | 1507.00 | 1200 | ... | 60-79 (C4-G5) | Soprano II | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n09swv314_Verbum_caro_factum | {1: '4/4', 8: '3/2', 12: '4/4', 21: '3/2', 25:... | {1: -1} | 121 | 121 | 578.0 | 121 | 121 | 578.0 | 1488.00 | 772 | ... | 60-79 (C4-G5) | Soprano II | 41-57 (F2-A3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n10swv315_Hodie_Christus_natus_est | {1: '4/4'} | {1: 0} | 99 | 99 | 396.0 | 99 | 99 | 396.0 | 1007.00 | 884 | ... | 48-67 (C3-G4) | Tenor | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n11swv316_Wann_unsre_Augen_schlafen_ein | {1: '4/4'} | {1: -1} | 76 | 76 | 304.0 | 76 | 76 | 304.0 | 795.50 | 633 | ... | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n12swv317_Meister,_wir_haben_die_ganze_Nacht_gearbeitet | {1: '4/4'} | {1: 0} | 46 | 46 | 184.0 | 46 | 46 | 184.0 | 482.00 | 348 | ... | 48-65 (C3-F4) | Tenor II | 41-53 (F2-F3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n13swv318_Die_Furcht_des_Herren | {1: '4/4', 34: '3/2', 41: '4/4', 51: '3/2', 63... | {1: -1} | 66 | 66 | 302.0 | 66 | 66 | 302.0 | 750.00 | 372 | ... | 50-62 (D3-D4) | Tenor II | 38-55 (D2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n14swv319_Ich_beuge_meine_Knie_gegen_dem_Vater | {1: '4/4'} | {1: 0} | 95 | 95 | 380.0 | 95 | 95 | 380.0 | 939.00 | 630 | ... | 41-60 (F2-C4) | Bass II | 41-60 (F2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n15swv320_Ich_bin_jung_gewesen_und_bin_alt_worden | {1: '4/4'} | {1: -1} | 65 | 65 | 260.0 | 65 | 65 | 260.0 | 629.50 | 511 | ... | 38-58 (D2-Bb3) | Bass II | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | <NA> | <NA> | |
| op09n16swv321_Herr,_wenn_ich_nur_dich | {1: '2/2'} | {1: -1} | 78 | 78 | 312.0 | 78 | 78 | 312.0 | 974.00 | 813 | ... | 38-77 (D2-F5) | Soprano II | 48-67 (C3-G4) | Tenor | 38-55 (D2-G3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n17swv322_Rorate,_rorate_coeli | {1: '4/4'} | {1: -1} | 64 | 64 | 256.0 | 64 | 64 | 256.0 | 758.50 | 803 | ... | 41-79 (F2-G5) | Soprano II | 43-58 (G2-Bb3) | Bass | 41-58 (F2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n18swv323_Joseph,_du_Sohn_David | {1: '4/4'} | {1: 0} | 77 | 77 | 308.0 | 77 | 77 | 308.0 | 1101.00 | 623 | ... | 66-81 (F#4-A5) | Soprano II | 45-62 (A2-D4) | Bass | 45-62 (A2-D4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n19swv324_Ich_bin_die_Auferstehung | {1: '4/4'} | {1: 0} | 99 | 99 | 396.0 | 99 | 99 | 396.0 | 1196.50 | 1026 | ... | 50-65 (D3-F4) | Tenor II | 38-59 (D2-B3) | Bass | 38-58 (D2-Bb3) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n20swv325_Die_Seele_Christi_heilige_mich | {1: '4/4', 19: '3/2', 23: '4/4', 66: '3/2', 95... | {1: -1} | 114 | 114 | 522.0 | 114 | 114 | 522.0 | 1613.00 | 921 | ... | 43-64 (G2-E4) | Tenor | 38-60 (D2-C4) | Bass | 38-60 (D2-C4) | Continuo | <NA> | <NA> | <NA> | <NA> | |
| op09n21swv326_Ich_ruf_zu_dir,_Herr_Jesu_Christ | {1: '4/4', 41: '3/2', 53: '4/4'} | {1: -1} | 85 | 85 | 364.0 | 85 | 85 | 364.0 | 1395.00 | 673 | ... | 58-79 (Bb3-G5) | Soprano II | 62-75 (D4-Eb5) | Soprano III | 43-63 (G2-Eb4) | Bass | 43-58 (G2-Bb3) | Continuo | <NA> | <NA> | |
| op09n22swv327_Allein_Gott_in_der_Höh | {1: '3/2', 136: '4/4'} | {1: 0} | 148 | 148 | 862.0 | 148 | 148 | 862.0 | 2289.00 | 1135 | ... | 43-76 (G2-E5) | Soprano II | 43-64 (G2-E4) | Tenor I | 43-64 (G2-E4) | Tenor II | 41-57 (F2-A3) | Continuo | <NA> | <NA> | |
| op09n23swv328_Veni,_Sancte_Spiritus | {1: '4/4'} | {1: 0} | 122 | 122 | 488.0 | 122 | 122 | 488.0 | 1656.50 | 1493 | ... | 48-77 (C3-F5) | Soprano II | 41-67 (F2-G4) | Tenor I | 45-65 (A2-F4) | Tenor II | 40-64 (E2-E4) | Continuo | <NA> | <NA> | |
| op09n24swv329_Ist_Gott_für_uns | {1: '4/4'} | {1: -1} | 76 | 76 | 304.0 | 76 | 76 | 304.0 | 1133.50 | 1073 | ... | 43-69 (G2-A4) | Alto | 41-65 (F2-F4) | Tenor | 41-60 (F2-C4) | Bass | 41-60 (F2-C4) | Continuo | <NA> | <NA> | |
| op09n25swv330_Wer_will_uns_scheiden_von_der_Liebe_Gottes | {1: '4/4'} | {1: -1} | 79 | 79 | 320.0 | 79 | 79 | 320.0 | 1194.50 | 973 | ... | 57-70 (A3-Bb4) | Alto | 50-66 (D3-F#4) | Tenor | 39-58 (Eb2-Bb3) | Bass | 39-60 (Eb2-C4) | Continuo | <NA> | <NA> | |
| op09n26swv331_Die_Stimm_des_Herren_gehet_auf_den_Wassern | {1: '4/4', 21: '3/2', 34: '4/4', 80: '3/2', 93... | {1: 0} | 138 | 138 | 666.0 | 138 | 138 | 666.0 | 2278.50 | 1153 | ... | 41-69 (F2-A4) | Alto | 41-65 (F2-F4) | Tenor | 41-60 (F2-C4) | Bass | 38-62 (D2-D4) | Continuo | <NA> | <NA> | |
| op09n27swv332_Jubilate_Deo_omnis_terra | {1: '4/4', 69: '3/2', 84: '4/4'} | {1: -1} | 130 | 130 | 550.0 | 130 | 130 | 550.0 | 1955.50 | 1972 | ... | 41-69 (F2-A4) | Alto | 41-65 (F2-F4) | Tenor | 40-58 (E2-Bb3) | Bass | 40-60 (E2-C4) | Continuo | <NA> | <NA> | |
| op09n28swv333_Sei_gegrüßet,_Maria | {1: '3/2', 206: '4/4', 209: '3/2', 217: '4/4'} | {1: 0} | 220 | 220 | 1306.0 | 220 | 220 | 1306.0 | 3921.00 | 1536 | ... | 38-77 (D2-F5) | Soprano II | 38-71 (D2-B4) | Alto | 48-67 (C3-G4) | Tenor | 41-57 (F2-A3) | Bass | 41-57 (F2-A3) | Continuo | |
| op09n29swv334_Ave_Maria,_qualis_est | {1: '3/2', 201: '4/4', 204: '3/2', 212: '4/4'} | {1: 0} | 215 | 215 | 1276.0 | 215 | 215 | 1276.0 | 3851.00 | 1617 | ... | 38-77 (D2-F5) | Soprano II | 38-69 (D2-A4) | Alto | 48-67 (C3-G4) | Tenor | 41-57 (F2-A3) | Bass | 41-57 (F2-A3) | Continuo | |
| op09n30swv335_Was_betrübst_du_dich,_meine_Seele | {1: '4/4'} | {1: -1} | 87 | 87 | 348.0 | 87 | 87 | 348.0 | 1524.50 | 1177 | ... | 60-77 (C4-F5) | Soprano II | 55-69 (G3-A4) | Alto | 48-65 (C3-F4) | Tenor | 43-60 (G2-C4) | Bass | 39-57 (Eb2-A3) | Continuo | |
| op09n31swv336_Quemadmodum_desiderat_cervus | {1: '4/4'} | {1: -1} | 189 | 189 | 756.0 | 189 | 189 | 756.0 | 2604.50 | 2398 | ... | 38-69 (D2-A4) | Alto | 38-67 (D2-G4) | Tenor I | 41-64 (F2-E4) | Tenor II | 38-58 (D2-Bb3) | Bass | 38-62 (D2-D4) | Continuo | |
| op09n32swv337_Aufer_immensam | {1: '2/2'} | {1: 0} | 165 | 165 | 660.0 | 165 | 165 | 660.0 | 2217.50 | 2035 | ... | 43-69 (G2-A4) | Alto | 40-67 (E2-G4) | Tenor I | 38-64 (D2-E4) | Tenor II | 43-60 (G2-C4) | Bass | 43-60 (G2-C4) | Continuo |
55 rows × 63 columns
Composition years histogram#
Show source
hist_data = summary.reset_index()
hist_data.corpus = hist_data.corpus.map(corpus_names)
fig = px.histogram(
hist_data,
x="composed_end",
color="corpus",
labels=dict(
composed_end="decade",
count="pieces",
),
color_discrete_map=corpus_name_colors,
title=f"Temporal coverage of the {N} annotated pieces in the Distant Listening Corpus",
)
fig.update_traces(xbins=dict(size=10))
fig.update_layout(**utils.STD_LAYOUT)
fig.update_legends(font=dict(size=16))
save_figure_as(fig, "pieces_timeline_histogram", height=1250)
fig.show()
Dimensions#
Overview#
def make_overview_table(groupby, group_name="pieces"):
n_groups = groupby.size().rename(group_name)
absolute_numbers = dict(
measures=groupby.last_mn.sum(),
length=groupby.length_qb.sum(),
notes=groupby.n_onsets.sum(),
labels=groupby.label_count.sum(),
)
absolute = pd.DataFrame.from_dict(absolute_numbers)
absolute = pd.concat([n_groups, absolute], axis=1)
sum_row = pd.DataFrame(absolute.sum(), columns=["sum"]).T
absolute = pd.concat([absolute, sum_row])
return absolute
absolute = make_overview_table(summary.groupby("workTitle"))
# print(absolute.astype(int).to_markdown())
absolute.astype(int)
| pieces | measures | length | notes | labels | |
|---|---|---|---|---|---|
| Kleine geistliche Konzerte I | 23 | 2165 | 9390 | 16333 | 4173 |
| Kleine geistliche Konzerte II | 32 | 3408 | 15308 | 31221 | 7536 |
| sum | 55 | 5573 | 24698 | 47554 | 11709 |
def summarize_dataset(D):
all_metadata = D.get_metadata()
summary = make_summary(all_metadata)
return make_overview_table(summary.groupby(level=0))
corpus_summary = summarize_dataset(D)
print(corpus_summary.astype(int).to_markdown())
| | pieces | measures | length | notes | labels |
|:---------------------------|---------:|-----------:|---------:|--------:|---------:|
| kleine_geistliche_konzerte | 55 | 5573 | 24698 | 47554 | 11709 |
| sum | 55 | 5573 | 24698 | 47554 | 11709 |
Measures#
all_measures = D.get_feature("measures")
print(
f"{len(all_measures.index)} measures over {len(all_measures.groupby(level=[0,1]))} files."
)
all_measures.head()
5611 measures over 56 files.
| mc | mn | quarterbeats | duration_qb | keysig | timesig | act_dur | mc_offset | numbering_offset | dont_count | barline | breaks | repeats | next | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| corpus | piece | i | ||||||||||||||
| kleine_geistliche_konzerte | op08n01swv282_Eile_mich,_Gott,_zu_erretten | 0 | 1 | 1 | 0 | 4.0 | 0 | 4/4 | 1 | 0 | <NA> | <NA> | <NA> | <NA> | firstMeasure | (2,) |
| 1 | 2 | 2 | 4 | 4.0 | 0 | 4/4 | 1 | 0 | <NA> | <NA> | <NA> | <NA> | <NA> | (3,) | ||
| 2 | 3 | 3 | 8 | 4.0 | 0 | 4/4 | 1 | 0 | <NA> | <NA> | <NA> | <NA> | <NA> | (4,) | ||
| 3 | 4 | 4 | 12 | 4.0 | 0 | 4/4 | 1 | 0 | <NA> | <NA> | <NA> | <NA> | <NA> | (5,) | ||
| 4 | 5 | 5 | 16 | 4.0 | 0 | 4/4 | 1 | 0 | <NA> | <NA> | <NA> | <NA> | <NA> | (6,) |
all_measures.get_default_analysis().plot_grouped()
Harmony labels#
All symbols, independent of the local key (the mode of which changes their semantics).
try:
all_annotations = D.get_feature("harmonylabels").df
except Exception:
all_annotations = pd.DataFrame()
n_annotations = len(all_annotations.index)
includes_annotations = n_annotations > 0
if includes_annotations:
display(all_annotations.head())
print(f"Concatenated annotation tables contains {all_annotations.shape[0]} rows.")
no_chord = all_annotations.root.isna()
if no_chord.sum() > 0:
print(
f"{no_chord.sum()} of them are not chords. Their values are:"
f" {all_annotations.label[no_chord].value_counts(dropna=False).to_dict()}"
)
all_chords = all_annotations[~no_chord].copy()
print(
f"Dataset contains {all_chords.shape[0]} tokens and {len(all_chords.chord.unique())} types over "
f"{len(all_chords.groupby(level=[0,1]))} documents."
)
all_annotations["corpus_name"] = all_annotations.index.get_level_values(0).map(
utils.get_corpus_display_name
)
all_chords["corpus_name"] = all_chords.index.get_level_values(0).map(
utils.get_corpus_display_name
)
else:
print("Dataset contains no annotations.")
| mc | mn | quarterbeats | quarterbeats_all_endings | duration_qb | mc_onset | mn_onset | timesig | staff | voice | ... | numeral_or_applied_to_numeral | intervals_over_bass | intervals_over_root | scale_degrees | scale_degrees_and_mode | scale_degrees_major | scale_degrees_minor | globalkey | localkey | chord | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| corpus | piece | i | |||||||||||||||||||||
| kleine_geistliche_konzerte | op08n01swv282_Eile_mich,_Gott,_zu_erretten | 0 | 1 | 1 | 0 | 0 | 12.0 | 0 | 0 | 4/4 | 2 | 1 | ... | i | (m3, P5) | (m3, P5) | (1, 3, 5) | (1, 3, 5), minor | (1, b3, 5) | (1, 3, 5) | d | i | i |
| 1 | 4 | 4 | 12 | 12 | 6.0 | 0 | 0 | 4/4 | 2 | 1 | ... | v | (m3, P5) | (m3, P5) | (5, 7, 2) | (5, 7, 2), minor | (5, b7, 2) | (5, 7, 2) | d | i | v | ||
| 2 | 5 | 5 | 18 | 18 | 2.0 | 1/2 | 1/2 | 4/4 | 2 | 1 | ... | iv | (m3, P5) | (m3, P5) | (4, 6, 1) | (4, 6, 1), minor | (4, b6, 1) | (4, 6, 1) | d | i | iv | ||
| 3 | 6 | 6 | 20 | 20 | 4.0 | 0 | 0 | 4/4 | 2 | 1 | ... | I | (M3, P5) | (M3, P5) | (1, #3, 5) | (1, #3, 5), minor | (1, 3, 5) | (1, #3, 5) | d | i | I | ||
| 4 | 7 | 7 | 24 | 24 | 4.0 | 0 | 0 | 4/4 | 2 | 1 | ... | i | (m3, P5) | (m3, P5) | (1, 3, 5) | (1, 3, 5), minor | (1, b3, 5) | (1, 3, 5) | d | i | i |
5 rows × 51 columns
Concatenated annotation tables contains 11709 rows.
Dataset contains 11709 tokens and 471 types over 55 documents.